const gulp = require('gulp');
const rename = require('gulp-rename');//重命名
const fileConcat = require('gulp-concat');//合并文件
const folderClean = require('clean');//清空文件夹
const fileinclude = require('gulp-file-include');
const artTemplate = require('gulp-art-tpl');//art-template模板
const htmlmin = require('gulp-htmlmin');//html压缩
const less = require('gulp-less');//less编译css
const csso = require('gulp-csso');//css压缩

const data = require('./data');

// const artTemplateRules = [
//   {test:/<art(#?)((?:==|=#|[=-])?)[ \t]*([\w\W]*?)[ \t]*(-?)art>/}
//   ,{test:/{\$([@#]?)[ \t]*(\/?)([\w\W]*?)[ \t]*\$}/}
// ]
// 2021-1-23
// 撤去该正则匹配，因为日后较少将art-Template和ejs合用，更多使用vue做模板任务；
// 保留art-Template或ejs主要是留给纯静态页面使用；
// 需要字符串模板时用es6字符串模板语法；

const artTemplateImports = {
  console:console
  ,Array:Array
  ,Date:Date
  // ,DateFormat:require('dateformat')
  ,Math:Math
  ,Object:Object
}


// 打包html
gulp.task('html',function(){
  return gulp.src('./src/*.art'
    ).pipe(
      artTemplate(
        {data:data}
        ,{
          // rules:artTemplateRules,
          imports:artTemplateImports
        }
      ).on('error',function(err){
        console.log(err)
        this.emit('end');
      })
    ).pipe(
      rename({
        extname: '.html'
      })
    )
    // .pipe(
      // htmlmin({
      //   collapseWhitespace: true//折叠有助于文档树中文本节点的空白
      //   ,preserveLineBreaks:true//标签之间的空格包含换行符时，请务必合拢到1个换行符（永远不要将其完全删除）。必须与collapseWhitespace=true
      //   ,includeAutoGeneratedTags:true//插入HTML解析器生成的标签
      // })
    // )
    .pipe(
      gulp.dest('./dist')
    );
	}
);

// 打包js
gulp.task('js', function(){
  return gulp.src('./src/js/**/*.js')
    .pipe(gulp.dest('./dist/js'));
});

// 打包css
gulp.task('css', function(){
  return gulp.src('./src/css/**/*.less')
    .pipe(less())
    .pipe(gulp.dest('./dist/css'));
});

gulp.task(
  'default'
  ,gulp.series('html',function() {
    console.log('gulp is over')
  // Do something after a, b, and c are finished.
}));

